/**
 * 将数组（array）拆分成多个 size 长度的区块，并将这些区块组成一个新数组。
 * 如果array 无法被分割成全部等长的区块，那么最后剩余的元素将组成一个区块。
 *
 * @param  array 需要处理的数组。
 * @param size 每个数组区块的长度。
 * @returns  返回一个包含拆分区块的新数组（注：相当于一个二维数组）。
 * @example
 *
 * chunk(['a', 'b', 'c', 'd', 'e'], 2) => [['a', 'b'], ['c', 'd'], ['e']]
 */
// deno-lint-ignore no-explicit-any
export function chunk(array: any[], size = 1) {
  size = Math.max(size, 0)
  const length = array == null ? 0 : array.length
  if (!length || size < 1) return []
  let index = 0
  let resIndex = 0
  const result = new Array(Math.ceil(length / size))

  while (index < length) {
    result[resIndex++] = array.slice(index, (index += size))
  }
  return result
}

if (import.meta.main) {
  console.log(chunk(['a', 'b', 'c', 'd', 'e'], 2))
}
